DB 정규화2 :: DB에 대한 글들을 모았습니다.[SSISO Community]
 
SSISO 카페 SSISO Source SSISO 구직 SSISO 쇼핑몰 SSISO 맛집
추천검색어 : JUnit   Log4j   ajax   spring   struts   struts-config.xml   Synchronized   책정보   Ajax 마스터하기   우측부분

DB에 대한 글들을 모았습니다.
[1]
등록일:2009-04-18 22:31:26 (0%)
작성자:
제목:DB 정규화2

원래 정규화란 중복성을 최소화하고 정보의 일관성을 보장하기 위한 관계형 데이터 베이스에서 제일 중요한 개념인데요

 

제1정규화는
여러 값을 가진 컬럼이 존재할 수 없다. 즉 반복되는 그룹이 존재해서는 안 된다. 각 행과 열에는 하나의 값만이 올수 있다.

예를 들면

 

고객번호(P.K) 고객명  취미       
1                   이윤호영화 여행
2                   이민호  등산

 

이런 테이블이 있을수는 없고 이걸 수정한다면

 

고객번호(P.K)  고객명
1                    이윤호
2                    이민호  하고 또하나

 

고객번호(P.K) 일련번호(P.K) 취미
1                   1                   영화
1                   2                   여행
2                   1                   등산

 

이런식으로 두개로 분리해야 한다는거죠

 

제2정규화
모든키가 아닌 컬럼은 기본 키 전체에 의존적이여야 한다. 기본키의 일부분에 의존적이어서는 안 된다.

 

예를 들어

사번(p.k)    프로젝트번호(p.k)   부서   프로젝트역할   고과율
1                a                         전산    팀장               A
1                b                         전산    조원               C
1                c                         전산    부팀장            B
2                c                         경리    팀장               A
3                c                         기획    팀장               A

 

이 테이블의 기본키는 사번과 프로젝트번호인데 부서 컬럼은 사번에만 의존적이다.

이것은 2정규화를 거치면

 

사번(p.k) 프로젝트번호(p.k) 프로젝트역할 고과율
1             a                        팀장             A
1             b                        조원             C
1             c                        부팀장          B
2             c                        팀장             A
3             c                        팀장             A

 

요렇게 하고 부서 테이블을 다시 따로 때네서

 

사번   부서
1        전산
2        경리
3        기획

요렇게 해서 릴레이션을 걸면 됩니다.

 

제3정규화
키가아닌 컬럼은, 다른 키가 아닌 컬럼에 의존적일어서는 안된다.
예를 들어

 

사번(p.k) 프로젝트번호(p.k) 프로젝트역할 고과율
1            a                        팀장              A
1            b                        조원              C
1            c                        부팀장           B
2            c                        팀장              A
3            c                        팀장              A

 

요 테이블을 다시 보면 고과율은 프로젝트 역할에 의존적인걸 알수 있습니다.

 

이것을 또 3정규화 거치면

사번(p.k) 프로젝트번호(p.k) 프로젝트역할
1             a                        팀장
1             b                        조원
1             c                        부팀장
2             c                        팀장
3             c                        팀장

 

프로젝트역할   고과율
팀장               A
조원               C
부팀장            B

 

요렇게 또 따로 때네줘야 합니다

 

BCNF 정규화는

3정규형에서 BCNF 정규형이 되려면 비결정자에의한 함수종속을 제거해야 하는것을 알고계시죠..

비결정자에 의한 함수종속을 제거해서 분해된 BCNF정규형

결과적으로 모든 속성들이 후보키로서 사용이 가능한 형태로 분해됩니다.

다시 말해 분해된 테이블의 모든 결정자들이 후보키이면

BCNF정규형이라 말합니다

 

제4정규화는
2정규화 된 테이블은 다대다 관계를 가질수 없다.

이건 따로 예를 안들어도 되겠죠?ㅋㅋ

 

제5정규화는 실무에서 정말 안쓴다고 알고 있습니다.

출처 : Tong - manilove님의 데베통통 7777

[본문링크] DB 정규화2
[1]
코멘트(이글의 트랙백 주소:/cafe/tb_receive.php?no=31468
작성자
비밀번호

 

SSISOCommunity

[이전]

Copyright byCopyright ⓒ2005, SSISO Community All Rights Reserved.